Aspects of the present invention relate generally to the field of video processing, and more specifically to a predictive video coding system.
In conventional video coding systems, an encoder may code a source video sequence into a coded representation that has a smaller bit rate than does the source video and, thereby achieve data compression. The encoder may include a pre-processor to perform video processing operations on the source video sequence, such as filtering or other processing operations, that may improve the efficiency of the coding operations performed by the encoder.
The encoder may code each frame of the processed video data according to any of a variety of different coding techniques to achieve data compression. Using predictive coding techniques (e.g., temporal/motion predictive encoding), predictive video coders exploit temporal redundancy in a source video stream by predicting content of pixel blocks in a current frame with reference to previously-coded frames, called “reference frames.” An encoder reconstructs coded reference frames and stores them locally for use in coding later-received video data. When coding a new frame, the frames typically are parsed into pixel blocks. For each pixel block in the frame, the encoder searches for adequate matches among the reconstructed reference frame data. If an adequate match is found in a reference frame, the encoder selects the reference frame's pixel blocks as a prediction reference for the current pixel block and generates motion vectors identifying a location of the reference pixel block. The encoder further encodes residual data generated representing a difference between the pixel block being coded and the pixel block selected from the reference frame.
The search algorithms that match a prediction pixel block from a reference frame to a pixel block being coded are resource-intensive. Known search methods require an iterative search between the new pixel block and each of the locally-stored reconstructed reference frames. The H.264 video coding standard supports up to 16 reference frames to be active simultaneously at an encoder. Moreover, for each reference frame, the search algorithms involve comparisons between the pixel block being coded and the reference frame data at each motion vector supported by the coding protocol. For example, in H.264 Level 3.1 defines that motion vectors can range from −512 to +511.75 in quarter-pixel increments and the frame size can be up to 3,600 16×16 pixel blocks. Thus, these reference frame searches can involve considerable processing costs for a video coding system.
Accordingly, there is a need in the art for a coding system that performs reference frame searches for predictive coding systems at manageable costs.